package com.example.demo.controller;

import com.example.demo.AppUtil.ImgUploadUtil;
import com.example.demo.config.ben.Qiniu;
import com.example.demo.result.Result;
import com.example.demo.service.IAnAttachFileService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/*
 * @Author:大力王
 * @Date:2024/6/2-02-12:34
 * 开始了
 */
@Api( tags = "红-文件接口")
@RestController
@RequestMapping("/File")
public class FileController {
    @Autowired
    private IAnAttachFileService attachFileService;
    @Resource
    private Qiniu qiniu;
    @Autowired
    private ImgUploadUtil imgUploadUtil;

    /**
     * 处理元素文件上传请求。
     * 该方法接收一个文件上传请求，并将文件上传至服务器。如果文件为空，则返回提示信息。
     *
     * @param file 上传的文件，通过@RequestParam注解指定参数名为file。
     * @return 返回上传结果，包含文件名或错误信息。
     */
    @PostMapping("/upload/element")
    public Result<String > uploadElementFile(@RequestParam("file") MultipartFile file) throws IOException {
        if(file.isEmpty()){
            return Result.success().msg("文件为空，不能上传");
        }
        String fileName = attachFileService.uploadFile(file);
        return Result.success(fileName).msg("上传成功");
    }

    /**
     * 处理TinyMCE编辑器文件上传请求。
     * 该方法接收一个文件上传请求，并根据配置将文件上传至服务器或七牛云。返回文件的访问URL。
     *
     * @param editorFile 上传的文件，通过@RequestParam注解指定参数名为editorFile。
     * @return 返回上传结果，包含文件的访问URL或错误信息。
     * @throws IOException 如果文件读写发生错误，抛出IOException。
     */
    @PostMapping("/upload/tinymceEditor")
    public Result<String> uploadTinymceEditor(@RequestParam("editorFile") MultipartFile editorFile) throws IOException {
        String fileName =  attachFileService.uploadFile(editorFile);
        String data = "";
        if (Objects.equals(imgUploadUtil.getUploadType(), 1)) {
            data = imgUploadUtil.getUploadPath() + fileName;
        } else if (Objects.equals(imgUploadUtil.getUploadType(), 2)) {
            data = qiniu.getResourcesUrl() + fileName;
        }
        return Result.success(data).msg("上传成功");
    }
}
